package com.taobao.api.domain;

import java.util.Date;

import com.taobao.api.TaobaoObject;
import com.taobao.api.internal.mapping.ApiField;

/**
 * 全量、增量的添加政策压缩包的json对应对象
 *
 * @author auto create
 * @since 1.0, null
 */
public class BatchPolicy extends TaobaoObject {

	private static final long serialVersionUID = 6756826525471438231L;

	/**
	 * 政策所支持的航空公司二字码.必需参数
	 */
	@ApiField("airline")
	private String airline;

	/**
	 * 政策支持的到达机场列表，逗号分隔的机场三字码， 注： 1.让利(8)政策，当到达支持多个(最多25)时，出发只能支持一个； 2.特价(6)/特殊(10)政策，出发/到达城市只支持一个.必需参数
	 */
	@ApiField("arr_airports")
	private String arrAirports;

	/**
	 * 扩展字段,json格式： 
"rfc" 对应值: 1.不退不改不签,2.收费退改签（退、改、签中任意一个收费即为收费退改签）,3.免费退改签 ；
"ipt" 对应值 :1:等额行程单 2:不提供发票5:等额“行程单+发票”（对应旧的2） 6:等额发票（对应旧的1）;
"fdtod"对应值：起飞时间“0000”为0时0分
"ldtod"对应值：到达时间“2359”为23时59分
	 */
	@ApiField("attributes")
	private String attributes;

	/**
	 * 政策是否支持自动HK，默认为不支持
	 */
	@ApiField("auto_hk_flag")
	private Boolean autoHkFlag;

	/**
	 * 政策是否支持自动出票，默认不支持， 注：自动出票时，必须同时自动HK
	 */
	@ApiField("auto_ticket_flag")
	private Boolean autoTicketFlag;

	/**
	 * @1: [{"matcher":{"mode":"ALL","list":["D"]},"priceStrategy":{"mode": "TICKET_PRICE","modeBaseValue":500,"retention":500,"rebase":-5}}] @2: [{"matcher" :{"mode":"ALL","list":["D"]},"priceStrategy":{"mode":"DISCOUNT" ,"modeBaseValue" :null,"retention":300,"rebase":-5}}] @3: [{"matcher":{"mode":"ALL","list":["D"]},"priceStrategy":{"mode":"Y_DISCOUNT","modeBaseValue":75,"retention":500,"rebase":-5}}] 规则说明： cabin_rules分二个字段：matcher:适应舱位（又包含两个字段：mode：匹配模式枚举(填INCLUDE），list：适应舱位列表），priceStrategy:价格策略（mode:价格模式（让利产品：DISCOUNT，特价特殊产品有四种模式：票面价用TICKET_PRICE，Y舱折扣用Y_DISCOUNT，C舱折扣用C_DISCOUNT，F舱折扣用F_DISCOUNT）；modeBaseValue:当价格模式mode为DISCOUNT，modeBaseValue不填；当价格模式mode为TICKET_PRICE，modeBaseValue填票面价；当价格模式mode为Y_DISCOUNT/C_DISCOUNT/F_DISCOUNT，modeBaseValue填对应的折扣；retention为返点的百分比；rebase为留钱） 注意：特殊政策不需要舱位时需要传入22；retention、rebase传入小数时，会取整数部分
	 */
	@ApiField("cabin_rules")
	private String cabinRules;

	/**
	 * 改签规则
	 */
	@ApiField("change_rule")
	private String changeRule;

	/**
	 * 政策适用的星期几，1-7分别表示周一到周日 注：特殊政策不能填写该字段；其它政策填写时， 包含全部时需要设置为1234567
	 */
	@ApiField("day_of_weeks")
	private String dayOfWeeks;

	/**
	 * 政策支持的出发机场列表，逗号分隔的机场三字码， 注： 1.让利(8)政策，当出发支持多个(最多25)时，到达只能支持一个； 2.特价(6)/特殊(10)政策，出发/到达城市只支持一个.必需参数
	 */
	@ApiField("dep_airports")
	private String depAirports;

	/**
	 * ei项，自动HK，自动出票设定时必需
	 */
	@ApiField("ei")
	private String ei;

	/**
	 * 政策旅行有效日期中排除指定日期，设定日期将不在搜索结果页面展现 注：最多排除20天，特殊政策无此设置
	 */
	@ApiField("exclude_date")
	private String excludeDate;

	/**
	 * 政策销售日期最早提前天数，-1表示无效
	 */
	@ApiField("first_sale_advance_day")
	private Long firstSaleAdvanceDay;

	/**
	 * 扩展标记，按位属性标记 , 从右到左数，第1个位表示：不PAT自动HK 第2个位表示：儿童可与成人同价 比如：“儿童可与成人同价”=true ,“不PAT自动HK”=false,则表示成二进制字符串"10",换算成十进制flags=2
	 */
	@ApiField("flags")
	private Long flags;

	/**
	 * 包含/排除的航班号，注意格式： +CA1234,CZ3166，表示包含列表 -CA1234,CZ3166，表示排除列表 默认包含所有航班； 不支持同时包含和排除
	 */
	@ApiField("flight_info")
	private String flightInfo;

	/**
	 * 当前政策销售日期最晚 提前天数,-1表示无效
	 */
	@ApiField("last_sale_advance_day")
	private Long lastSaleAdvanceDay;

	/**
	 * 代理商对政策的备注信息
	 */
	@ApiField("memo")
	private String memo;

	/**
	 * 政策设置为支持自动HK，自动出票时必需
	 */
	@ApiField("office_id")
	private String officeId;

	/**
	 * 当前政策的外部产品id，用于关联代理商自身维护的政策id，必需参数，使用接口调用时唯一标识政策
	 */
	@ApiField("out_product_id")
	private String outProductId;

	/**
	 * 当前政策的政策类型：6，特价政策；8，让利政策；10，特殊政策，必需参数
	 */
	@ApiField("policy_type")
	private Long policyType;

	/**
	 * 退票规则
	 */
	@ApiField("refund_rule")
	private String refundRule;

	/**
	 * 签转规则
	 */
	@ApiField("reissue_rule")
	private String reissueRule;

	/**
	 * 政策销售日期最晚提前天数，-1表示无效
	 */
	@ApiField("sale_end_date")
	private Date saleEndDate;

	/**
	 * 当前政策销售有效日期的开始日期(注意，格式如：20120-03-10 10:30:31 等价2012-03-11)必需参数
	 */
	@ApiField("sale_start_date")
	private Date saleStartDate;

	/**
	 * 当前特殊政策的库存信息，特殊政策时必需，待补充
	 */
	@ApiField("seat_info")
	private String seatInfo;

	/**
	 * 当前政策是否支持共享航班，默认为不支持共享航班(不支持共享航班时，如果当前航班为非承运航班，则搜索结果也不展现)
	 */
	@ApiField("share_support")
	private Boolean shareSupport;

	/**
	 * 默认填写TOP,如需要自定义，必须大写，则按source批量删除时需要在接口中taobao.jipiao.policiesstatus.update指定参数source;通过接口taobao.jipiao.policy.process添加的政策会自动加上source为TOP,代理商后台页面录入的source为PC,excel上传的source为UPLOAD
	 */
	@ApiField("source")
	private String source;

	/**
	 * 当前政策旅行有效日期的结束日期(注意，格式如：20120-03-10 10:30:31 等价2012-03-11)必需参数
	 */
	@ApiField("travel_end_date")
	private Date travelEndDate;

	/**
	 * 当前政策旅行有效日期的开始日期(注意，格式，如：2012-03-10 10:30:31 等价2012-03-10)必需参数
	 */
	@ApiField("travel_start_date")
	private Date travelStartDate;

	public String getAirline() {
		return this.airline;
	}
	public void setAirline(String airline) {
		this.airline = airline;
	}

	public String getArrAirports() {
		return this.arrAirports;
	}
	public void setArrAirports(String arrAirports) {
		this.arrAirports = arrAirports;
	}

	public String getAttributes() {
		return this.attributes;
	}
	public void setAttributes(String attributes) {
		this.attributes = attributes;
	}

	public Boolean getAutoHkFlag() {
		return this.autoHkFlag;
	}
	public void setAutoHkFlag(Boolean autoHkFlag) {
		this.autoHkFlag = autoHkFlag;
	}

	public Boolean getAutoTicketFlag() {
		return this.autoTicketFlag;
	}
	public void setAutoTicketFlag(Boolean autoTicketFlag) {
		this.autoTicketFlag = autoTicketFlag;
	}

	public String getCabinRules() {
		return this.cabinRules;
	}
	public void setCabinRules(String cabinRules) {
		this.cabinRules = cabinRules;
	}

	public String getChangeRule() {
		return this.changeRule;
	}
	public void setChangeRule(String changeRule) {
		this.changeRule = changeRule;
	}

	public String getDayOfWeeks() {
		return this.dayOfWeeks;
	}
	public void setDayOfWeeks(String dayOfWeeks) {
		this.dayOfWeeks = dayOfWeeks;
	}

	public String getDepAirports() {
		return this.depAirports;
	}
	public void setDepAirports(String depAirports) {
		this.depAirports = depAirports;
	}

	public String getEi() {
		return this.ei;
	}
	public void setEi(String ei) {
		this.ei = ei;
	}

	public String getExcludeDate() {
		return this.excludeDate;
	}
	public void setExcludeDate(String excludeDate) {
		this.excludeDate = excludeDate;
	}

	public Long getFirstSaleAdvanceDay() {
		return this.firstSaleAdvanceDay;
	}
	public void setFirstSaleAdvanceDay(Long firstSaleAdvanceDay) {
		this.firstSaleAdvanceDay = firstSaleAdvanceDay;
	}

	public Long getFlags() {
		return this.flags;
	}
	public void setFlags(Long flags) {
		this.flags = flags;
	}

	public String getFlightInfo() {
		return this.flightInfo;
	}
	public void setFlightInfo(String flightInfo) {
		this.flightInfo = flightInfo;
	}

	public Long getLastSaleAdvanceDay() {
		return this.lastSaleAdvanceDay;
	}
	public void setLastSaleAdvanceDay(Long lastSaleAdvanceDay) {
		this.lastSaleAdvanceDay = lastSaleAdvanceDay;
	}

	public String getMemo() {
		return this.memo;
	}
	public void setMemo(String memo) {
		this.memo = memo;
	}

	public String getOfficeId() {
		return this.officeId;
	}
	public void setOfficeId(String officeId) {
		this.officeId = officeId;
	}

	public String getOutProductId() {
		return this.outProductId;
	}
	public void setOutProductId(String outProductId) {
		this.outProductId = outProductId;
	}

	public Long getPolicyType() {
		return this.policyType;
	}
	public void setPolicyType(Long policyType) {
		this.policyType = policyType;
	}

	public String getRefundRule() {
		return this.refundRule;
	}
	public void setRefundRule(String refundRule) {
		this.refundRule = refundRule;
	}

	public String getReissueRule() {
		return this.reissueRule;
	}
	public void setReissueRule(String reissueRule) {
		this.reissueRule = reissueRule;
	}

	public Date getSaleEndDate() {
		return this.saleEndDate;
	}
	public void setSaleEndDate(Date saleEndDate) {
		this.saleEndDate = saleEndDate;
	}

	public Date getSaleStartDate() {
		return this.saleStartDate;
	}
	public void setSaleStartDate(Date saleStartDate) {
		this.saleStartDate = saleStartDate;
	}

	public String getSeatInfo() {
		return this.seatInfo;
	}
	public void setSeatInfo(String seatInfo) {
		this.seatInfo = seatInfo;
	}

	public Boolean getShareSupport() {
		return this.shareSupport;
	}
	public void setShareSupport(Boolean shareSupport) {
		this.shareSupport = shareSupport;
	}

	public String getSource() {
		return this.source;
	}
	public void setSource(String source) {
		this.source = source;
	}

	public Date getTravelEndDate() {
		return this.travelEndDate;
	}
	public void setTravelEndDate(Date travelEndDate) {
		this.travelEndDate = travelEndDate;
	}

	public Date getTravelStartDate() {
		return this.travelStartDate;
	}
	public void setTravelStartDate(Date travelStartDate) {
		this.travelStartDate = travelStartDate;
	}

}
